1
Le code comme données : La nature homoiconique d'Elixir
AI019Lesson 10
00:00

La nature de l'homoiconie

Langage homoiconique: Un langage dans lequel la représentation interne est exprimée dans le langage lui-même. En Elixir, le code source n'est pas seulement du texte ; c'est une structure de données imbriquée appelée l' Arbre syntaxique abstrait (AST).

1. Règles logiques de représentation

Elixir simplifie l'AST en représentant les littéraux élémentaires tels quels. Les atomes, les nombres, les listes (y compris les listes de mots-clés), les chaînes binaires et les tuples à deux éléments sont représentés internement sans emballage complexe.

iex> quote do: [do: 1]
[do: 1]
iex> quote do: "binaires"
"binaires"

2. Structure du tuple AST

La plupart des transformations de code donnent lieu à un tuple à trois éléments : {nom_fonction, métadonnées, arguments}. Par exemple, un appel de fonction comme 1 + 2 devient {:+, [ligne: 1], [1, 2]}. Cela permet au langage de traiter Le code comme données.

3. Macros : Report de l'exécution

Les macros sont « une manière de reporter l'exécution des clauses en injectant du code dans la représentation interne de notre programme ». Alors que les fonctions standards évaluent les arguments avant d'appel, les macros reçoivent l' AST brut, ce qui permet l'injection de logique avant la compilation.

$$\text{Code source} \xrightarrow{\text{quote}} \text{Tuple AST} \xrightarrow{\text{macro}} \text{AST transformé}$$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>